home *** CD-ROM | disk | FTP | other *** search
- global gSize, gCast, gPatternListBoxHeight, gNewPatternName, myCurrentImage, myCurrentPreview, gMyFontStyle, gTextAntialias
-
- on loadPatterns
- osCheck = baVersion("os")
- if (osCheck = "WinNT") or (osCheck = "Win2000") or (osCheck = "WinXP") then
- loadPatternsNT()
- else
- fileioObject = new(xtra("fileio"))
- openFile(fileioObject, baSysFolder("windows") & "control.ini", 0)
- myText = readFile(fileioObject)
- errorCode = status(fileioObject)
- if errorCode <> 0 then
- alert("Status:" & error(fileioObject, errorCode))
- end if
- closeFile(fileioObject)
- fileioObject = VOID
- the itemDelimiter = "["
- repeat with X = 1 to the number of items in myText
- if item X of myText contains "Patterns]" then
- put item X of myText into field "pattern values"
- next repeat
- end if
- put EMPTY into item X of myText
- end repeat
- myText = VOID
- repeat with X = 1 to the number of lines in field "pattern values"
- if char 1 of line X of field "pattern values" = numToChar(10) then
- delete char 1 of line X of field "pattern values"
- end if
- end repeat
- repeat with X = 1 to the number of lines in field "pattern values"
- if line X of field "pattern values" = EMPTY then
- delete line X of field "pattern values"
- end if
- end repeat
- delete line 1 of field "pattern values"
- if the last line in field "pattern values" = EMPTY then
- delete char -30003 of field "pattern values"
- end if
- myPatternList = []
- myPatternList.sort()
- repeat with X = 1 to the number of lines in field "pattern values"
- myPatternList.add(line X of field "pattern values")
- end repeat
- put getAt(myPatternList, 1) into field "pattern values"
- repeat with X = 2 to myPatternList.count
- put RETURN & getAt(myPatternList, X) after field "pattern values"
- end repeat
- myPatternList = VOID
- the itemDelimiter = "="
- repeat with X = 1 to the number of lines in field "pattern values"
- put RETURN & item 1 of line X of field "pattern values" after field "pattern list"
- end repeat
- delete line 1 of field "pattern list"
- put member("pattern list").text.line[1] into field "current pattern"
- put field("pattern list") into field "pattern screen list"
- end if
- end
-
- on loadPatternsNT
- myText = baRegValueList("Control Panel\Patterns", "HKEY_CURRENT_USER")
- myText.sort()
- put "(None)" into field "pattern list"
- put "(None)=(None)" into field "pattern values"
- repeat with i = 1 to myText.count
- put RETURN & myText[i] after field "pattern list"
- put RETURN & myText[i] & "=" & baReadRegString("Control Panel\Patterns", myText[i], "Error", "HKEY_CURRENT_USER") after field "pattern values"
- end repeat
- myText = VOID
- put member("pattern list").text.line[1] into field "current pattern"
- put field("pattern list") into field "pattern screen list"
- end
-
- on saveAs1bitPattern
- rows = [[], [], [], [], [], [], [], []]
- Y = -1
- repeat with r = 1 to 8
- X = -1
- Y = Y + 1
- repeat with c = 1 to 8
- X = X + 1
- testTone = member("8x8").image.getPixel(X, Y)
- if testTone = paletteIndex(0) then
- rows[r][c] = 0
- next repeat
- end if
- rows[r][c] = 1
- end repeat
- end repeat
- dec1 = integer((rows[1][1] * power(2, 7)) + (rows[1][2] * power(2, 6)) + (rows[1][3] * power(2, 5)) + (rows[1][4] * power(2, 4)) + (rows[1][5] * power(2, 3)) + (rows[1][6] * power(2, 2)) + (rows[1][7] * power(2, 1)) + (rows[1][8] * power(2, 0)))
- dec2 = integer((rows[2][1] * power(2, 7)) + (rows[2][2] * power(2, 6)) + (rows[2][3] * power(2, 5)) + (rows[2][4] * power(2, 4)) + (rows[2][5] * power(2, 3)) + (rows[2][6] * power(2, 2)) + (rows[2][7] * power(2, 1)) + (rows[2][8] * power(2, 0)))
- dec3 = integer((rows[3][1] * power(2, 7)) + (rows[3][2] * power(2, 6)) + (rows[3][3] * power(2, 5)) + (rows[3][4] * power(2, 4)) + (rows[3][5] * power(2, 3)) + (rows[3][6] * power(2, 2)) + (rows[3][7] * power(2, 1)) + (rows[3][8] * power(2, 0)))
- dec4 = integer((rows[4][1] * power(2, 7)) + (rows[4][2] * power(2, 6)) + (rows[4][3] * power(2, 5)) + (rows[4][4] * power(2, 4)) + (rows[4][5] * power(2, 3)) + (rows[4][6] * power(2, 2)) + (rows[4][7] * power(2, 1)) + (rows[4][8] * power(2, 0)))
- dec5 = integer((rows[5][1] * power(2, 7)) + (rows[5][2] * power(2, 6)) + (rows[5][3] * power(2, 5)) + (rows[5][4] * power(2, 4)) + (rows[5][5] * power(2, 3)) + (rows[5][6] * power(2, 2)) + (rows[5][7] * power(2, 1)) + (rows[5][8] * power(2, 0)))
- dec6 = integer((rows[6][1] * power(2, 7)) + (rows[6][2] * power(2, 6)) + (rows[6][3] * power(2, 5)) + (rows[6][4] * power(2, 4)) + (rows[6][5] * power(2, 3)) + (rows[6][6] * power(2, 2)) + (rows[6][7] * power(2, 1)) + (rows[6][8] * power(2, 0)))
- dec7 = integer((rows[7][1] * power(2, 7)) + (rows[7][2] * power(2, 6)) + (rows[7][3] * power(2, 5)) + (rows[7][4] * power(2, 4)) + (rows[7][5] * power(2, 3)) + (rows[7][6] * power(2, 2)) + (rows[7][7] * power(2, 1)) + (rows[7][8] * power(2, 0)))
- dec8 = integer((rows[8][1] * power(2, 7)) + (rows[8][2] * power(2, 6)) + (rows[8][3] * power(2, 5)) + (rows[8][4] * power(2, 4)) + (rows[8][5] * power(2, 3)) + (rows[8][6] * power(2, 2)) + (rows[8][7] * power(2, 1)) + (rows[8][8] * power(2, 0)))
- rows = VOID
- decimalSet = dec1 & " " & dec2 & " " & dec3 & " " & dec4 & " " & dec5 & " " & dec6 & " " & dec7 & " " & dec8
- writePattern = baWriteIni("Patterns", gNewPatternName, decimalSet, baSysFolder("windows") & "control.ini")
- if writePattern = 0 then
- alert("Not able to save pattern to disk.")
- else
- baFlushIni(baSysFolder("windows") & "control.ini")
- if sprite(the currentSpriteNum) = sprite(37) then
- setDsktop = baSetPattern(gNewPatternName, decimalSet)
- if setDsktop = 0 then
- alert("Not able to set desktop pattern.")
- end if
- end if
- end if
- end
-
- on namePatternDialog
- global gMUI
- gMUI = new(xtra("mui"))
- windowProps = GetWindowPropList(gMUI)
- windowProps.type = #normal
- windowProps.name = "Save As"
- windowProps.callback = "myCallbackPattern"
- windowProps.width = 200
- windowProps.height = 100
- windowProps.Mode = #pixel
- list = []
- element = GetItemPropList(gMUI)
- element.type = #label
- element.value = "Pattern Name:"
- element.locH = 5
- element.locV = 5
- element.width = 100
- element.height = 20
- add(list, element)
- element = GetItemPropList(gMUI)
- element.type = #editText
- element.value = EMPTY
- element.locH = 5
- element.locV = 30
- element.width = 190
- element.height = 20
- add(list, element)
- element = GetItemPropList(gMUI)
- element.type = #defaultPushButton
- element.title = "OK"
- element.locH = 20
- element.locV = 65
- element.width = 60
- element.height = 20
- add(list, element)
- element = GetItemPropList(gMUI)
- element.type = #cancelPushButton
- element.title = "Cancel"
- element.locH = 120
- element.locV = 65
- element.width = 60
- element.height = 20
- add(list, element)
- Initialize(gMUI, [#windowPropList: windowProps, #windowItemList: list])
- Run(gMUI)
- end
-
- on myCallbackPattern action, elementNumber, elementList
- global gMUI
- if action = #itemChanged then
- gNewPatternName = elementList.value
- end if
- if (action = #itemClicked) and (elementList.title = "OK") then
- if (gNewPatternName = EMPTY) or (gNewPatternName = VOID) then
- alert("Please type a name in the field.")
- else
- if gNewPatternName contains "=" then
- alert("The character " & QUOTE & "=" & QUOTE & " is not allowed in a pattern name.")
- else
- stop(gMUI, 0)
- gMUI = VOID
- saveAs1bitPattern()
- put EMPTY into field "pattern list"
- loadPatterns()
- gPatternListBoxHeight = (member("pattern list").lineCount * member("pattern list").lineHeight) - (9 * member("pattern list").lineHeight)
- hilite char 1 to member("pattern list").text.line[1].length + 1 of field "pattern list"
- sprite(80).locV = 55
- member("pattern preview").image.fill(member("pattern preview").rect, paletteIndex(0))
- member("pattern temp").image.fill(member("pattern temp").rect, paletteIndex(0))
- member("revert - 8").image = duplicate(member("8x8").image)
- put gNewPatternName into field "file status"
- gNewPatternName = VOID
- end if
- end if
- else
- if (action = #itemClicked) and (elementList.title = "Cancel") then
- stop(gMUI, 0)
- gMUI = VOID
- gNewPatternName = VOID
- end if
- end if
- end
-
- on save1bitPattern
- if field("file status") = EMPTY then
- namePatternDialog()
- else
- rows = [[], [], [], [], [], [], [], []]
- Y = -1
- repeat with r = 1 to 8
- X = -1
- Y = Y + 1
- repeat with c = 1 to 8
- X = X + 1
- testTone = member("8x8").image.getPixel(X, Y)
- if testTone = paletteIndex(0) then
- rows[r][c] = 0
- next repeat
- end if
- rows[r][c] = 1
- end repeat
- end repeat
- dec1 = integer((rows[1][1] * power(2, 7)) + (rows[1][2] * power(2, 6)) + (rows[1][3] * power(2, 5)) + (rows[1][4] * power(2, 4)) + (rows[1][5] * power(2, 3)) + (rows[1][6] * power(2, 2)) + (rows[1][7] * power(2, 1)) + (rows[1][8] * power(2, 0)))
- dec2 = integer((rows[2][1] * power(2, 7)) + (rows[2][2] * power(2, 6)) + (rows[2][3] * power(2, 5)) + (rows[2][4] * power(2, 4)) + (rows[2][5] * power(2, 3)) + (rows[2][6] * power(2, 2)) + (rows[2][7] * power(2, 1)) + (rows[2][8] * power(2, 0)))
- dec3 = integer((rows[3][1] * power(2, 7)) + (rows[3][2] * power(2, 6)) + (rows[3][3] * power(2, 5)) + (rows[3][4] * power(2, 4)) + (rows[3][5] * power(2, 3)) + (rows[3][6] * power(2, 2)) + (rows[3][7] * power(2, 1)) + (rows[3][8] * power(2, 0)))
- dec4 = integer((rows[4][1] * power(2, 7)) + (rows[4][2] * power(2, 6)) + (rows[4][3] * power(2, 5)) + (rows[4][4] * power(2, 4)) + (rows[4][5] * power(2, 3)) + (rows[4][6] * power(2, 2)) + (rows[4][7] * power(2, 1)) + (rows[4][8] * power(2, 0)))
- dec5 = integer((rows[5][1] * power(2, 7)) + (rows[5][2] * power(2, 6)) + (rows[5][3] * power(2, 5)) + (rows[5][4] * power(2, 4)) + (rows[5][5] * power(2, 3)) + (rows[5][6] * power(2, 2)) + (rows[5][7] * power(2, 1)) + (rows[5][8] * power(2, 0)))
- dec6 = integer((rows[6][1] * power(2, 7)) + (rows[6][2] * power(2, 6)) + (rows[6][3] * power(2, 5)) + (rows[6][4] * power(2, 4)) + (rows[6][5] * power(2, 3)) + (rows[6][6] * power(2, 2)) + (rows[6][7] * power(2, 1)) + (rows[6][8] * power(2, 0)))
- dec7 = integer((rows[7][1] * power(2, 7)) + (rows[7][2] * power(2, 6)) + (rows[7][3] * power(2, 5)) + (rows[7][4] * power(2, 4)) + (rows[7][5] * power(2, 3)) + (rows[7][6] * power(2, 2)) + (rows[7][7] * power(2, 1)) + (rows[7][8] * power(2, 0)))
- dec8 = integer((rows[8][1] * power(2, 7)) + (rows[8][2] * power(2, 6)) + (rows[8][3] * power(2, 5)) + (rows[8][4] * power(2, 4)) + (rows[8][5] * power(2, 3)) + (rows[8][6] * power(2, 2)) + (rows[8][7] * power(2, 1)) + (rows[8][8] * power(2, 0)))
- rows = VOID
- decimalSet = dec1 & " " & dec2 & " " & dec3 & " " & dec4 & " " & dec5 & " " & dec6 & " " & dec7 & " " & dec8
- writePattern = baWriteIni("Patterns", the text of field "file status", decimalSet, baSysFolder("windows") & "control.ini")
- if writePattern = 0 then
- alert("Not able to save pattern to disk.")
- else
- baFlushIni(baSysFolder("windows") & "control.ini")
- member("revert - 8").image = duplicate(member("8x8").image)
- the itemDelimiter = "="
- repeat with X = 1 to the number of lines in field "pattern values"
- if item 1 of line X of field "pattern values" = the text of field "file status" then
- put string(decimalSet) into item 2 of line X of field "pattern values"
- exit repeat
- end if
- end repeat
- if sprite(the currentSpriteNum) = sprite(37) then
- setDsktop = baSetPattern(the text of field "file status", decimalSet)
- if setDsktop = 0 then
- alert("Not able to set desktop pattern.")
- end if
- end if
- end if
- end if
- end
-
- on export1bitPattern
- SaveFileName = baGetFilename("save", EMPTY, "untitled", "Bitmap files (*.bmp)|*.bmp", 2 + 4 + 8 + 32 + 524288, "Export Pattern", 0, -1, 0)
- if SaveFileName = EMPTY then
- pass()
- else
- ImageExportXtra = new(xtra("RAVIMAGEEXPORT"))
- if objectp(ImageExportXtra) = 0 then
- alert("Failed to export pattern!")
- else
- RavRegisterImageExport(ImageExportXtra, "R100-72-57970312")
- member("8x8x1").image.copyPixels(member("8x8").image, member("8x8").rect, member("8x8").rect)
- if RavSaveCastMemberFromName(ImageExportXtra, "8x8x1", SaveFileName, 0, 0, 1, #ravBMP) = #false then
- alert("Error: " & RavGetProp(ImageExportXtra, #ravLastErrorCodeString))
- end if
- ImageExportXtra = 0
- end if
- end if
- end
-
- on new1bitPattern
- if sprite(1).pUndoTrigger then
- if field("file status") = EMPTY then
- newDocCheck = baMsgBox("Save current project before starting a new one?", "Save First?", "YesNoCancel", "Question", 3)
- if newDocCheck = "Yes" then
- namePatternDialog()
- else
- if newDocCheck = "Cancel" then
- pass()
- end if
- end if
- else
- newDocCheck = baMsgBox("Save changes to current project before starting a new one?", "Save First?", "YesNoCancel", "Question", 3)
- if newDocCheck = "Yes" then
- save1bitPattern()
- else
- if newDocCheck = "Cancel" then
- pass()
- end if
- end if
- end if
- end if
- repeat with i = member("preview", "1bit").number to member("preview", "1bit").number + 8
- member(i).image.fill(member(i).rect, paletteIndex(0))
- end repeat
- put EMPTY into field "file status"
- member("1st color", "1bit").image.fill(member("1st color", "1bit").rect, paletteIndex(255))
- member("2nd color", "1bit").image.fill(member("2nd color", "1bit").rect, paletteIndex(0))
- member("pattern preview").image.fill(member("pattern preview").rect, paletteIndex(0))
- member("pattern temp").image.fill(member("pattern temp").rect, paletteIndex(0))
- member("pattern list").scrollTop = 0
- clearGlobals()
- gMyFontStyle = [#plain]
- gTextAntialias = 0
- go("new2")
- end
-